package com.zhenlong01.zhentest.util;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.OSSObject;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * @author Administrator
 * @date 2019-08-30 14:38
 */
public class OSSUtil {

    public static void ossUpload(String picName,byte[] b){
        // Endpoint以杭州为例，其它Region请按实际情况填写。
        String endpoint = "http://oss-cn-qingdao.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录 https://ram.console.aliyun.com 创建RAM账号。
        String accessKeyId = "LTAI4FigMgaKVE6gYT1WGGnK";
        String accessKeySecret = "io3xc4aaurOebB3AHFzz6MQT20D54h";
        String bucketName = "zhenlongweixin";
        String objectName = picName;

// 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// 上传内容到指定的存储空间（bucketName）并保存为指定的文件名称（objectName）。

        ossClient.putObject(bucketName, objectName,
                new ByteArrayInputStream(b));

// 关闭OSSClient。
        ossClient.shutdown();
    }

    public static String ossDownload(String picName) throws IOException {
        // Endpoint以杭州为例，其它Region请按实际情况填写。
        String endpoint = "http://oss-cn-qingdao.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录 https://ram.console.aliyun.com 创建RAM账号。
        String accessKeyId = "LTAI4FigMgaKVE6gYT1WGGnK";
        String accessKeySecret = "io3xc4aaurOebB3AHFzz6MQT20D54h";
        String bucketName = "zhenlongweixin";
        String objectName = picName;


// 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);

// ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
        OSSObject ossObject = ossClient.getObject(bucketName, objectName);

// 读取文件内容。
        System.out.println("Object content:");
        BufferedReader reader = new BufferedReader(new InputStreamReader(ossObject.getObjectContent()));
        StringBuffer sb = new StringBuffer();
        while (true) {
            String line = reader.readLine();
            if (line == null) break;

            sb.append(line);
        }
// 数据读取完成后，获取的流必须关闭，否则会造成连接泄漏，导致请求无连接可用，程序无法正常工作。
        reader.close();

// 关闭OSSClient。
        ossClient.shutdown();

        return sb.toString();
    }

}
